The present disclosure relates generally to cloud storage systems, and more particularly to scheduling input/output (I/O) in cloud storage systems.
Cloud storage systems face challenges that are absent in storage systems that are deployed in traditional data centers. For example, with respect to cloud storage systems, clients may negotiate Service-Level Objectives (SLOs) with providers of cloud storage systems. These SLOs may also be referred to as Service-Level Agreements (SLAs). SLOs may specify particular metrics/thresholds that the cloud storage systems are expected to provide for each of the clients. For example, a client may negotiate with a cloud storage system provider that particular operations should be processed within a particular amount of time, a particular amount of storage should be provided, and so forth. These SLOs may vary based on the particular client, such that a cloud storage system may have a plurality of different SLOs that the cloud storage system is expected to meet.
Traditional data centers may employ a centralized journaling device (also known as a transaction log or a write-ahead log) that serializes data updates, maintains consistency of stored data, and achieves high availability. However, the use of such a journaling device in a cloud storage system may create a bottleneck that causes the cloud storage environment to fail to meet SLOs with respect to particular clients. For example, requests from a first client may be blocked from further processing by earlier submitted requests from another client that are being processed. Accordingly, an SLO corresponding to the first client may not be achieved.
Therefore, a need exists for systems and techniques to maintain data consistency and high-availability in a data storage environment while meeting performance expectations of clients. Thus, while existing cloud storage systems have been generally adequate, the techniques described herein improve performance.